package behavior.TemplatePattern.introduce.demo;
/**
 * 模板方法模式----抽象类实现
 * */
public class TemplatePattern{
    public static void main(String[] args) {
        Game game = new BasketBall();
        game.play();

        game = new FootBall();
        game.play();
    }
}
abstract class Game{
    abstract void init();
    abstract void startPlay();
    abstract void endPlay();
    /**
     * 模板方法
     * */
    public final void play(){
        init();
        startPlay();
        endPlay();
    }
}
class BasketBall extends Game{

    @Override
    void init() {
        System.out.println("篮球----游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("篮球----开始游戏");
    }

    @Override
    void endPlay() {
        System.out.println("篮球----游戏结束");
    }
}
class FootBall extends Game{

    @Override
    void init() {
        System.out.println("足球----游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("足球----开始游戏");
    }

    @Override
    void endPlay() {
        System.out.println("足球----游戏结束");
    }
}